ããã¯ãããã²ãŒã·ã§ã³ã䜿çšããŠãããã³ããšã³ãã§ãã¥ãŒã©ã«ãããã¯ãŒã¯ã®åŸé ãå¯èŠåããçè§£ãšãããã°ãæ·±ããããã®å æ¬çãªã¬ã€ãã
ããã³ããšã³ããã¥ãŒã©ã«ãããã¯ãŒã¯åŸé å¯èŠåïŒããã¯ãããã²ãŒã·ã§ã³è¡šç€º
ãã¥ãŒã©ã«ãããã¯ãŒã¯ã¯ãçŸä»£ã®æ©æ¢°åŠç¿ã®èŠã§ããããã°ãã°ããã©ãã¯ããã¯ã¹ããšèŠãªãããŸãããã¥ãŒã©ã«ãããã¯ãŒã¯ãã©ã®ããã«åŠç¿ããæææ±ºå®ãè¡ãããçè§£ããããšã¯ãçµéšè±å¯ãªå®åå®¶ã«ãšã£ãŠãé£ããå ŽåããããŸããåŸé å¯èŠåãç¹ã«ããã¯ãããã²ãŒã·ã§ã³ã®è¡šç€ºã¯ããããã®ããã¯ã¹ã®å éšãèŠã蟌ã¿ã貎éãªæŽå¯ãåŸãããã®åŒ·åãªæ¹æ³ãæäŸããŸãããã®ããã°èšäºã§ã¯ãããã³ããšã³ãã®ãã¥ãŒã©ã«ãããã¯ãŒã¯åŸé å¯èŠåãå®è£ ããWebãã©ãŠã¶ã§çŽæ¥åŠç¿ããã»ã¹ããªã¢ã«ã¿ã€ã ã§èгå¯ã§ããããã«ããæ¹æ³ãæ¢ããŸãã
ãªãåŸé ãå¯èŠåããã®ãïŒ
å®è£ ã®è©³çްã«å ¥ãåã«ããªãåŸé ã®å¯èŠåãéåžžã«éèŠã§ããããçè§£ããŸãããã
- ãããã°ïŒåŸé ã®å¯èŠåã¯ããã¬ãŒãã³ã°ã劚ããå¯èœæ§ã®ããåŸé ã®æ¶å€±ãççºãªã©ã®äžè¬çãªåé¡ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã倧ããªåŸé ã¯äžå®å®æ§ã瀺åãããŒãã«è¿ãåŸé ã¯ãã¥ãŒãã³ãåŠç¿ããŠããªãããšã瀺åããŠããŸãã
- ã¢ãã«ã®çè§£ïŒåŸé ããããã¯ãŒã¯å ãã©ã®ããã«æµãããã芳å¯ããããšã«ãããäºæž¬ãè¡ãäžã§ã©ã®ç¹åŸŽãæãéèŠã§ããããããæ·±ãçè§£ã§ããŸããããã¯ãå ¥åãšåºåã®é¢ä¿ãããã«æããã«ãªããªãè€éãªã¢ãã«ã§ç¹ã«åœ¹ç«ã¡ãŸãã
- ããã©ãŒãã³ã¹ãã¥ãŒãã³ã°ïŒåŸé ã®å¯èŠåã¯ãã¢ãŒããã¯ãã£èšèšããã€ããŒãã©ã¡ãŒã¿ãã¥ãŒãã³ã°ïŒåŠç¿çãããããµã€ãºãªã©ïŒãæ£ååææ³ã«é¢ããæææ±ºå®ã«åœ¹ç«ã¡ãŸããããšãã°ãç¹å®ã®å±€ãäžè²«ããŠå°ããªåŸé ãæã£ãŠããããšã芳å¯ãããšããã匷åãªæŽ»æ§å颿°ã®äœ¿çšãããããã®å±€ã®åŠç¿çã®å¢å ã瀺åãããå ŽåããããŸãã
- æè²ç®çïŒæ©æ¢°åŠç¿ã®åŠçãåå¿è ã®å ŽåãåŸé ãå¯èŠåããããšã¯ãããã¯ãããã²ãŒã·ã§ã³ã¢ã«ãŽãªãºã ãšãã¥ãŒã©ã«ãããã¯ãŒã¯ã®å éšæ§é ãçè§£ããããã®å ·äœçãªæ¹æ³ãæäŸããŸãã
ããã¯ãããã²ãŒã·ã§ã³ã®çè§£
ããã¯ãããã²ãŒã·ã§ã³ã¯ããã¥ãŒã©ã«ãããã¯ãŒã¯ã®éã¿ã«å¯Ÿããæå€±é¢æ°ã®åŸé ãèšç®ããããã«äœ¿çšãããã¢ã«ãŽãªãºã ã§ãããããã®åŸé ã¯ããã¬ãŒãã³ã°äžã«éã¿ãæŽæ°ããããã«äœ¿çšããããããã¯ãŒã¯ãããæ£ç¢ºãªäºæž¬ãè¡ãç¶æ ã«ç§»åãããŸããããã¯ãããã²ãŒã·ã§ã³ããã»ã¹ã®ç°¡ç¥åããã説æã¯æ¬¡ã®ãšããã§ãã
- é æ¹åãã¹ïŒå ¥åããŒã¿ããããã¯ãŒã¯ã«å ¥åãããåºåãå±€ããšã«èšç®ãããŸãã
- æå€±èšç®ïŒãããã¯ãŒã¯ã®åºåãšå®éã®ã¿ãŒã²ããã®éãã¯ãæå€±é¢æ°ã䜿çšããŠèšç®ãããŸãã
- éæ¹åãã¹ïŒæå€±é¢æ°ã®åŸé ã¯ãåºåå±€ããéå§ããå ¥åå±€ãŸã§é¡ã£ãŠããããã¯ãŒã¯ã®åéã¿ã«å¯ŸããŠèšç®ãããŸããããã«ã¯ãé£éåŸãé©çšããŠãåå±€ã®æŽ»æ§å颿°ãšéã¿ã®å°é¢æ°ãèšç®ããããšãå«ãŸããŸãã
- éã¿ã®æŽæ°ïŒéã¿ã¯ãèšç®ãããåŸé ãšåŠç¿çã«åºã¥ããŠæŽæ°ãããŸãããã®ã¹ãããã«ã¯ãéåžžãçŸåšã®éã¿ããåŸé ã®å°ããªå²åãå·®ãåŒãããšãå«ãŸããŸãã
ããã³ããšã³ãã®å®è£ ïŒæè¡ãšã¢ãããŒã
ããã³ããšã³ãã®åŸé å¯èŠåãå®è£ ããã«ã¯ãããã€ãã®æè¡ãçµã¿åãããå¿ èŠããããŸãã
- JavaScriptïŒããã³ããšã³ãéçºã®äž»èŠãªèšèªã
- ãã¥ãŒã©ã«ãããã¯ãŒã¯ã©ã€ãã©ãªïŒTensorFlow.jsãBrain.jsãªã©ã®ã©ã€ãã©ãªã¯ããã©ãŠã¶å ã§çŽæ¥ãã¥ãŒã©ã«ãããã¯ãŒã¯ãå®çŸ©ããã³ãã¬ãŒãã³ã°ããããã®ããŒã«ãæäŸããŸãã
- å¯èŠåã©ã€ãã©ãªïŒD3.jsãChart.jsããŸãã¯åçŽãªHTML5 Canvasãªã©ã®ã©ã€ãã©ãªã䜿çšããŠãåŸé ãèŠèŠçã«ããããããæ¹æ³ã§ã¬ã³ããªã³ã°ã§ããŸãã
- HTML/CSSïŒå¯èŠåã衚瀺ãããã¬ãŒãã³ã°ããã»ã¹ãå¶åŸ¡ããããã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãäœæããããã
äžè¬çãªã¢ãããŒãã«ã¯ããã¬ãŒãã³ã°ã«ãŒãã倿ŽããŠãããã¯ãããã²ãŒã·ã§ã³ããã»ã¹äžã«åå±€ã§åŸé ããã£ããã£ããããšãå«ãŸããŸãããããã®åŸé ã¯ãã¬ã³ããªã³ã°ã®ããã«å¯èŠåã©ã€ãã©ãªã«æž¡ãããŸãã
äŸïŒTensorFlow.jsãšChart.jsã䜿çšããåŸé ã®å¯èŠå
ãã¥ãŒã©ã«ãããã¯ãŒã¯ã«TensorFlow.jsãå¯èŠåã«Chart.jsã䜿çšããç°¡åãªäŸã詊ããŠã¿ãŸãããããã®äŸã§ã¯ããµã€ã³æ³¢ãè¿äŒŒããããã«ãã¬ãŒãã³ã°ãããåçŽãªãã£ãŒããã©ã¯ãŒããã¥ãŒã©ã«ãããã¯ãŒã¯ã«çŠç¹ãåœãŠãŠããŸãããã®äŸã¯ãäžæ žãšãªãæŠå¿µã瀺ãããã®ãã®ã§ãããããè€éãªã¢ãã«ã§ã¯ãå¯èŠåæŠç¥ã®èª¿æŽãå¿ èŠã«ãªãå ŽåããããŸãã
1. ãããžã§ã¯ãã®èšå®
ãŸããHTMLãã¡ã€ã«ãäœæããå¿ èŠãªã©ã€ãã©ãªãå«ããŸãã
<!DOCTYPE html>
<html>
<head>
<title>åŸé
å¯èŠå</title>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<canvas id="gradientChart"></canvas>
<script src="script.js"></script>
</body>
</html>
2. ãã¥ãŒã©ã«ãããã¯ãŒã¯ã®å®çŸ©ïŒscript.jsïŒ
次ã«ãTensorFlow.jsã䜿çšããŠãã¥ãŒã©ã«ãããã¯ãŒã¯ãå®çŸ©ããŸãã
const model = tf.sequential();
model.add(tf.layers.dense({ units: 10, activation: 'relu', inputShape: [1] }));
model.add(tf.layers.dense({ units: 1 }));
const optimizer = tf.train.adam(0.01);
model.compile({ loss: 'meanSquaredError', optimizer: optimizer });
3. åŸé ãã£ããã£ã®å®è£
éèŠãªã¹ãããã¯ããã¬ãŒãã³ã°ã«ãŒãã倿ŽããŠåŸé
ããã£ããã£ããããšã§ããTensorFlow.jsã¯ããã®ç®çã®ããã«tf.grad()颿°ãæäŸããŸãããã®é¢æ°å
ã§æå€±èšç®ãã©ããããå¿
èŠããããŸãã
async function train(xs, ys, epochs) {
for (let i = 0; i < epochs; i++) {
// åŸé
ãèšç®ããããã®æå€±é¢æ°ãã©ãããã
const { loss, grads } = tf.tidy(() => {
const predict = model.predict(xs);
const loss = tf.losses.meanSquaredError(ys, predict).mean();
// åŸé
ãèšç®ãã
const gradsFunc = tf.grad( (predict) => tf.losses.meanSquaredError(ys, predict).mean());
const grads = gradsFunc(predict);
return { loss, grads };
});
// åŸé
ãé©çšãã
optimizer.applyGradients(grads);
// 衚瀺çšã®æå€±å€ãååŸãã
const lossValue = await loss.dataSync()[0];
console.log('Epoch:', i, 'Loss:', lossValue);
// åŸé
ã®å¯èŠå (äŸïŒæåã®å±€ã®éã¿)
const firstLayerWeights = model.getWeights()[0];
// éã¿ã®æåã®å±€ã®åŸé
ãååŸãã
let layerName = model.layers[0].name
let gradLayer = grads.find(x => x.name === layerName + '/kernel');
const firstLayerGradients = await gradLayer.dataSync();
visualizeGradients(firstLayerGradients);
// ã¡ã¢ãªãªãŒã¯ãé²ãããã«ãã³ãœã«ãç Žæ£ãã
loss.dispose();
grads.dispose();
}
}
éèŠãªæ³šæç¹ïŒ
tf.tidy()ã¯ãTensorFlow.jsãã³ãœã«ã管çããã¡ã¢ãªãªãŒã¯ãé²ãããã«äžå¯æ¬ ã§ããtf.grad()ã¯ãåŸé ãèšç®ãã颿°ãè¿ããŸãããã®é¢æ°ããå ¥åïŒãã®å Žåã¯ãããã¯ãŒã¯ã®åºåïŒã§åŒã³åºãå¿ èŠããããŸããoptimizer.applyGradients()ã¯ãèšç®ãããåŸé ãé©çšããŠã¢ãã«ã®éã¿ãæŽæ°ããŸãã- Tensorflow.jsã§ã¯ãã¡ã¢ãªãªãŒã¯ãé²ãããã«ã䜿çšãçµãã£ãããã³ãœã«ãïŒ`.dispose()`ã䜿çšããŠïŒç Žæ£ããå¿ èŠããããŸãã
- ã¬ã€ã€ãŒã®åŸé åã«ã¢ã¯ã»ã¹ããã«ã¯ãã¬ã€ã€ãŒã®`.name`屿§ã䜿çšããåŸé ã衚瀺ãã倿°ã®åïŒããšãã°ãéã¿ã®å Žåã¯ãkernelããã¬ã€ã€ãŒã®ãã€ã¢ã¹ã®å Žåã¯ãbiasãïŒãé£çµããå¿ èŠããããŸãã
4. Chart.jsã䜿çšããåŸé ã®å¯èŠå
次ã«ãChart.jsã䜿çšããŠåŸé
ã衚瀺ããvisualizeGradients()颿°ãå®è£
ããŸãã
let chart;
async function visualizeGradients(gradients) {
const ctx = document.getElementById('gradientChart').getContext('2d');
if (!chart) {
chart = new Chart(ctx, {
type: 'bar',
data: {
labels: Array.from(Array(gradients.length).keys()), // ååŸé
ã®ã©ãã«
datasets: [{
label: 'åŸé
',
data: gradients,
backgroundColor: 'rgba(54, 162, 235, 0.2)',
borderColor: 'rgba(54, 162, 235, 1)',
borderWidth: 1
}]
},
options: {
scales: {
y: {
beginAtZero: true
}
}
}
});
} else {
// æ°ããããŒã¿ã§ãã£ãŒããæŽæ°ãã
chart.data.datasets[0].data = gradients;
chart.update();
}
}
ãã®é¢æ°ã¯ãæåã®å±€ã®éã¿ã®åŸé ã®å€§ããã衚瀺ããæ£ã°ã©ããäœæããŸããä»ã®å±€ããã©ã¡ãŒã¿ã®åŸé ãå¯èŠåããããã«ããã®ã³ãŒããé©å¿ãããããšãã§ããŸãã
5. ã¢ãã«ã®ãã¬ãŒãã³ã°
æåŸã«ãããã€ãã®ãã¬ãŒãã³ã°ããŒã¿ãçæãããã¬ãŒãã³ã°ããã»ã¹ãéå§ããŸãã
// ãã¬ãŒãã³ã°ããŒã¿ãçæãã
const xs = tf.linspace(0, 2 * Math.PI, 100);
const ys = tf.sin(xs);
// ã¢ãã«ããã¬ãŒãã³ã°ãã
train(xs.reshape([100, 1]), ys.reshape([100, 1]), 100);
ãã®ã³ãŒãã¯ããµã€ã³æ³¢ãã100åã®ããŒã¿ãã€ã³ããçæããã¢ãã«ã100ãšããã¯ãã¬ãŒãã³ã°ããŸãããã¬ãŒãã³ã°ãé²ãã«ã€ããŠããã£ãŒãã®åŸé ã®å¯èŠåãæŽæ°ãããåŠç¿ããã»ã¹ã«é¢ããæŽå¯ãåŸãããã¯ãã§ãã
代æ¿å¯èŠåæè¡
æ£ã°ã©ãã®äŸã¯ãåŸé ãå¯èŠåãã1ã€ã®æ¹æ³ã«ãããŸãããä»ã®æè¡ã«ã¯æ¬¡ã®ãã®ããããŸãã
- ããŒããããïŒç³ã¿èŸŒã¿å±€ã®éã¿ã®åŸé ãå¯èŠåããããã«ãããŒããããã¯ããããã¯ãŒã¯ã®æææ±ºå®ã«æã圱é¿åã®ããå ¥åç»åã®ã©ã®éšåã瀺ãããšãã§ããŸãã
- ãã¯ãã«ãã£ãŒã«ãïŒãªã«ã¬ã³ããã¥ãŒã©ã«ãããã¯ãŒã¯ïŒRNNïŒã®å Žåããã¯ãã«ãã£ãŒã«ãã¯ãåŸé ã®æéçãªæµããå¯èŠåããŠããããã¯ãŒã¯ãæéçãªäŸåé¢ä¿ãã©ã®ããã«åŠç¿ãããã«é¢ãããã¿ãŒã³ãæããã«ããããšãã§ããŸãã
- ç·ã°ã©ãïŒæéã®çµéã«äŒŽãåŸé ã®å šäœçãªå€§ããïŒããšãã°ãåå±€ã®å¹³ååŸé ãã«ã ïŒã远跡ããããã«ãç·ã°ã©ãã¯ãåŸé ã®æ¶å€±ãççºã®åé¡ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
- ã«ã¹ã¿ã å¯èŠåïŒç¹å®ã®ã¢ãŒããã¯ãã£ãšã¿ã¹ã¯ã«ãã£ãŠã¯ãåŸé ã«å«ãŸããæ å ±ã广çã«äŒããããã«ãã«ã¹ã¿ã å¯èŠåãéçºããå¿ èŠãããå ŽåããããŸããããšãã°ãèªç¶èšèªåŠçã§ã¯ãç¹å®ã®ã¿ã¹ã¯ã«ãšã£ãŠã©ã®åèªãæãéèŠã§ããããçè§£ããããã«ãåèªåã蟌ã¿ã®åŸé ãå¯èŠåããããšãã§ããŸãã
課é¡ãšèæ ®äºé
ããã³ããšã³ãã®åŸé å¯èŠåãå®è£ ããã«ã¯ãããã€ãã®èª²é¡ããããŸãã
- ããã©ãŒãã³ã¹ïŒãã©ãŠã¶ã§åŸé ãèšç®ããã³å¯èŠåããããšã¯ãç¹ã«å€§èŠæš¡ãªã¢ãã«ã§ã¯èšç®ã³ã¹ãããããå¯èœæ§ããããŸããWebGLã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã®äœ¿çšãåŸé æŽæ°ã®é »åºŠã®åæžãªã©ã®æé©åãå¿ èŠã«ãªãå ŽåããããŸãã
- ã¡ã¢ãªç®¡çïŒåè¿°ã®ããã«ãTensorFlow.jsã§ã¯ããªãŒã¯ãé²ãããã«æ éãªã¡ã¢ãªç®¡çãå¿ èŠã§ããäžèŠã«ãªã£ããåžžã«ãã³ãœã«ãç Žæ£ããŠãã ããã
- ã¹ã±ãŒã©ããªãã£ïŒæ°çŸäžã®ãã©ã¡ãŒã¿ãæã€éåžžã«å€§èŠæš¡ãªã¢ãã«ã®åŸé ãå¯èŠåããããšã¯å°é£ãªå ŽåããããŸããæ¬¡å åæžããµã³ããªã³ã°ãªã©ã®ææ³ãå¿ èŠã«ãªãå ŽåããããŸãã
- è§£éå¯èœæ§ïŒåŸé ã¯ãã€ãºãå€ããç¹ã«è€éãªã¢ãã«ã§ã¯è§£éãå°é£ãªå ŽåããããŸããæå³ã®ããæŽå¯ãæœåºããã«ã¯ãå¯èŠåæè¡ãæ éã«éžæããåŸé ãååŠçããå¿ èŠãããå ŽåããããŸããããšãã°ãåŸé ãã¹ã ãŒãºã«ããããæ£èŠåããããããšãå¯èŠæ§ãåäžããå¯èœæ§ããããŸãã
- ã»ãã¥ãªãã£ïŒãã©ãŠã¶ã§æ©å¯æ§ã®é«ãããŒã¿ã䜿çšããŠã¢ãã«ããã¬ãŒãã³ã°ããå Žåã¯ãã»ãã¥ãªãã£ã«é¢ããèæ ®äºé ã«æ³šæããŠãã ãããåŸé ã誀ã£ãŠå ¬éãŸãã¯æŒæŽ©ããªãããã«ããŠãã ããããã¬ãŒãã³ã°ããŒã¿ã®ãã©ã€ãã·ãŒãä¿è·ããããã«ãå·®åãã©ã€ãã·ãŒãªã©ã®ææ³ãæ€èšããŠãã ããã
ã°ããŒãã«ãªã¢ããªã±ãŒã·ã§ã³ãšåœ±é¿
ããã³ããšã³ããã¥ãŒã©ã«ãããã¯ãŒã¯åŸé å¯èŠåã¯ãããŸããŸãªãã¡ã€ã³ãšå°åã§å¹ åºãã¢ããªã±ãŒã·ã§ã³ããããŸãã
- æè²ïŒãªã³ã©ã€ã³ã®æ©æ¢°åŠç¿ã³ãŒã¹ãšãã¥ãŒããªã¢ã«ã§ã¯ãããã³ããšã³ãã®å¯èŠåã䜿çšããŠãäžçäžã®åŠçã«ã€ã³ã¿ã©ã¯ãã£ããªåŠç¿äœéšãæäŸã§ããŸãã
- ç ç©¶ïŒç ç©¶è ã¯ãå°éçãªããŒããŠã§ã¢ã«ã¢ã¯ã»ã¹ããªããŠããæ°ããã¢ãã«ã¢ãŒããã¯ãã£ãšãã¬ãŒãã³ã°ææ³ãæ¢çŽ¢ããããã«ãããã³ããšã³ãã®å¯èŠåã䜿çšã§ããŸããããã«ãããç 究掻åãæ°äž»åããããªãœãŒã¹ãéãããç°å¢ã®å人ãåå ã§ããããã«ãªããŸãã
- æ¥çïŒäŒæ¥ã¯ãããã³ããšã³ãã®å¯èŠåã䜿çšããŠãæ¬çªç°å¢ã§æ©æ¢°åŠç¿ã¢ãã«ããããã°ããã³æé©åããããã©ãŒãã³ã¹ãšä¿¡é Œæ§ã®åäžã«ã€ãªããããšãã§ããŸããããã¯ãã¢ãã«ã®ããã©ãŒãã³ã¹ãããžãã¹ææã«çŽæ¥åœ±é¿ãäžããã¢ããªã±ãŒã·ã§ã³ã§ç¹ã«äŸ¡å€ããããŸããããšãã°ãeã³ããŒã¹ã§ã¯ãåŸé å¯èŠåã䜿çšããŠã¬ã³ã¡ã³ããŒã·ã§ã³ã¢ã«ãŽãªãºã ãæé©åãããšã売äžã®å¢å ã«ã€ãªããå¯èœæ§ããããŸãã
- ã¢ã¯ã»ã·ããªãã£ïŒããã³ããšã³ãã®å¯èŠåã¯ãåŸé ã®ä»£æ¿è¡šçŸïŒãªãŒãã£ãªãã¥ãŒãè§ŠèŠãã£ã¹ãã¬ã€ãªã©ïŒãæäŸããããšã«ãããèŠèŠé害ã®ãããŠãŒã¶ãŒãæ©æ¢°åŠç¿ã«ã¢ã¯ã»ã¹ããããããããšãã§ããŸãã
ãã©ãŠã¶ã§çŽæ¥åŸé ãå¯èŠåã§ããããšã§ãéçºè ãšç ç©¶è ã¯ããã¥ãŒã©ã«ãããã¯ãŒã¯ããã广çã«æ§ç¯ãçè§£ããããã°ã§ããŸããããã«ãããã€ãããŒã·ã§ã³ã®å éãã¢ãã«ã®ããã©ãŒãã³ã¹ã®åäžãæ©æ¢°åŠç¿ã®å éšæ§é ã«å¯Ÿããããæ·±ãçè§£ã«ã€ãªããå¯èœæ§ããããŸãã
çµè«
ããã³ããšã³ããã¥ãŒã©ã«ãããã¯ãŒã¯åŸé å¯èŠåã¯ããã¥ãŒã©ã«ãããã¯ãŒã¯ãçè§£ãããããã°ããããã®åŒ·åãªããŒã«ã§ããJavaScriptãTensorFlow.jsã®ãããªãã¥ãŒã©ã«ãããã¯ãŒã¯ã©ã€ãã©ãªãChart.jsã®ãããªå¯èŠåã©ã€ãã©ãªãçµã¿åãããããšã§ãåŠç¿ããã»ã¹ã«é¢ãã貎éãªæŽå¯ãæäŸããã€ã³ã¿ã©ã¯ãã£ããªå¯èŠåãäœæã§ããŸããå æãã¹ã課é¡ã¯ãããŸããããããã°ãã¢ãã«ã®çè§£ãããã©ãŒãã³ã¹ãã¥ãŒãã³ã°ã®èгç¹ããã®åŸé å¯èŠåã®å©ç¹ã«ãããããã¯äŸ¡å€ã®ããåãçµã¿ãšãªããŸããæ©æ¢°åŠç¿ãé²åãç¶ããã«ã€ããŠãããã³ããšã³ãã®å¯èŠåã¯ããããã®åŒ·åãªãã¯ãããžãŒãäžçäžã®èŠèŽè ãããå©çšãããããçè§£ããããããäžã§ããŸããŸãéèŠãªåœ¹å²ãæããã§ãããã
詳现ãªèª¿æ»
- ããŸããŸãªå¯èŠåã©ã€ãã©ãªãæ¢çŽ¢ããïŒD3.jsã¯ãChart.jsãããã«ã¹ã¿ã å¯èŠåãäœæããéã®æè»æ§ãé«ããªã£ãŠããŸãã
- ããŸããŸãªåŸé å¯èŠåæè¡ãå®è£ ããïŒããŒããããããã¯ãã«ãã£ãŒã«ããç·ã°ã©ãã¯ãåŸé ã«é¢ããããŸããŸãªèŠç¹ãæäŸã§ããŸãã
- ããŸããŸãªãã¥ãŒã©ã«ãããã¯ãŒã¯ã¢ãŒããã¯ãã£ã詊ãïŒç³ã¿èŸŒã¿ãã¥ãŒã©ã«ãããã¯ãŒã¯ïŒCNNïŒãŸãã¯ãªã«ã¬ã³ããã¥ãŒã©ã«ãããã¯ãŒã¯ïŒRNNïŒã®åŸé ãå¯èŠåããŠã¿ãŠãã ããã
- ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã«è²¢ç®ããïŒåŸé å¯èŠåããŒã«ãšæè¡ãã³ãã¥ããã£ãšå ±æããŠãã ããã